package com.changgou.util;

import com.changgou.file.FastDFSFile;
import org.csource.common.NameValuePair;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;

import org.springframework.core.io.ClassPathResource;

/******
 * 实现FastDFS文件管理
 * 文件上传
 * 文件下载
 * 文件删除
 * 文件信息获取
 * Storage信息获取
 * Tracker信息获取
 */
public class FastDFSDUtil {
    /**
     * 加载tracker链接信息
     */
    static {
        try {
            //查找classpath下的文件路经
            String filename = new ClassPathResource("fdfs_client.conf").getPath();
            ClientGlobal.init(filename);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * 上传---用户访问网站上传
     *
     * @Param fastDFSFile 上传文件信息的封装
     */
    public static void upload(FastDFSFile fastDFSFile) throws Exception {

        //附加参数
        NameValuePair[] meta_list = new NameValuePair[1];
        meta_list[1] = new NameValuePair("author", fastDFSFile.getAuthor());

        //创建一个Tracker访问的客户端对象TrackerClient
        TrackerClient trackerClient = new TrackerClient();
        //通过TrackerClient访问TrackerService服务，获取链接信息;
        TrackerServer trackerServer = trackerClient.getConnection();
        //通过TrackerService的链接信息可以获取Storage的链接信息，创建StorageClient 对象存储Storage信息
        StorageClient storageClient = new StorageClient(trackerServer, null);

        /**
         * 通过StorageClient访问Storage，实现文件上传，并且获取文件上传后存储数据信息
         * 1上传文件的字节数组
         * 文件扩展名
         * 附加参数   比如：拍摄地址：南宁
         */

        String[] uploads = storageClient.upload_file(fastDFSFile.getContent(), fastDFSFile.getExt(), meta_list);

    }
}
